/*
 * this file use AGCode auto generate.
 * Project home page: https://gitee.com/you-yuan/AutoGeneratorCode
 * Copyright(c) 2022. YouYuan https://gitee.com/you-yuan/
 */


package com.yuan.springcloud.user.utils.transform;

import com.yuan.springcloud.user.bean.dto.UserSignDTO;
import com.yuan.springcloud.user.bean.po.UserSignPO;
import com.yuan.springcloud.user.bean.vo.UserSignVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * UserSign转换类，可将vo、dto、po等对象进行相互转换，性能比JSON序列化、反射等转换方式高60~200倍
 *
 * 使用方式有以下几种：
 *  1. 通过Spring自动注入@Autowired UserSignTrans userSignTrans;
 *  2. 使用UserSignTrans.instance
 *  3. 可将此常量UserSignTrans userSign = Mappers.getMapper(UserSignTrans.class);复制到统一的转换类Transform中，然后通过Transform.userSign进行使用
 * 当原对象与目标对象有不同名字的属性要进行映射时，需要通过 @Mapping 注解来具体的指定属性映射 @Mapping(source = "a", target = "b")
 * @author YouYuan
 * @date 2022/4/10 3:41
 */
@Mapper(componentModel = "spring")
public interface UserSignTrans {

    UserSignTrans instance = Mappers.getMapper(UserSignTrans.class);

    UserSignVO dto2vo(UserSignDTO dto);

    UserSignDTO vo2dto(UserSignVO vo);

    UserSignPO dto2po(UserSignDTO dto);

    UserSignDTO po2dto(UserSignPO vo);

    UserSignPO vo2po(UserSignVO dto);

    UserSignVO po2vo(UserSignPO vo);

    List<UserSignVO> dto2vo(List<UserSignDTO> dtoList);

    List<UserSignDTO> vo2dto(List<UserSignVO> voList);

    List<UserSignPO> dto2po(List<UserSignDTO> dtoList);

    List<UserSignDTO> po2dto(List<UserSignPO> poList);

    List<UserSignPO> vo2po(List<UserSignVO> voList);

    List<UserSignVO> po2vo(List<UserSignPO> poList);
}
